جاوا یک زبان شی گرا است. همانند سایر زبان های شی گرا که دارای ویژگی های شی گرایی هستند، جاوا نیز از مفاهیم اساسی زیر پشتیبانی می کند:
در این در قسمت از آموزش جاوا، به مفاهیم کلاس و اشیاء نگاهی خواهیم کرد.
شی: اشیاء یکسری خصوصیات (states) و رفتارها (behaviors) را دارند . به عنوان مثال:سگ خصوصیاتی مثل رنگ، نام، نژاد و همچنین رفتارهایی مانند تکان خوردن، پارس کردن و غذا خوردن را دارد. شی یک نمونه از کلاس است.
کلاس: کلاس الگو یا طرحی است که رفتارها و خصوصیات اشیایی که از آن پشتیبانی می کنند را توصیف می کند.
در این قسمت کمی عمیق تر به اینکه اشیا چه چیزی هستند، نگاه می کنیم. اگر دنیای واقعی را در نظر بگیریم، می توانیم اشیای زیادی را در اطراف خودمان پیدا کنیم. مانند، ماشین ها ، سگ ها، انسان ها و غیره. همه این شی ها خصوصیات و رفتارهایی دارند.
اگر سگ را بررسی کنیم، خصوصیات آن عبارت خواهند بود از : نام، نژاد، رنگ و رفتارهای آن عبارت خواهند بود از: تکان خوردن، پارس کردن، خوردن.
اگر اشیا در نرم افزار را با اشیای دنیای واقعی مقایسه کنیم، آنها کاراکترهای مشابه خیلی زیادی با هم خواهند داشت.
شی ها در نرم افزار نیز رفتارها و خصوصیات دارند. خصوصیات اشیای نرم افزار در فیلدها (fields) ذخیره می شوند و رفتارها با متدها نشان داده می شوند.
بنابراین در توسعه نرم افزار، متدها روی خصوصیات داخلی یک شی عمل می کنند و ارتباط شی با شی نیز با متدها انجام می گیرد.
کلاس طرحی است که از شی های منحصر بفرد ساخته می شود.
یک نمونه از کلاس در زیر آورده شده است:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class Dog{ String breed; int ageC String color; void barking(){ } void hungry(){ } void sleeping(){ } } |
یک کلاس می تواند شامل هر یک از انواع متغیر های زیر باشد:
متغیرهای تعریف شده در داخل متدها، سازنده و یا بلوک ها، متغیرهای محلی نامیده می شوند. این متغیر در داخل متد تعریف و مقدار دهی اولیه خواهد شد و متغیر زمانی که متد به آخر رسانده شده است، نابود خواهد شد.
متغیرهای نمونه، متغیرها¬یی هستند که داخل کلاس اما در خارج متدها باشند. این متغیرها زمانی که کلاس ایجاد می شود مقداردهی اولیه می شوند .متغیرهای نمونه می توانند از داخل متدها، سازنده و یا بلوک¬های آن کلاس قابل دسترسی باشند.
متغیرهای کلاس، متغیرهایی هستند که در کلاس و خارج از متدها، با کلمه کلیدی استاتیک (static) تعریف می شوند.
یک کلاس می تواند هر تعداد از متدها را برای دسترسی به مقدار انواع متدها داشته باشد. در مثال بالا، hungry() , sleeping() و barking() متد هستند.
زمانی که به دنبال مطالعه کلاس ها در زبان جاوا هستیم، باید موضوعات مهمی که در زیر بحث شده اند را بدانیم.
در بحث کلاس ها، یکی از مهم ترین موضوعات فرعی سازنده است. هر کلاس دارای یک سازنده است. اگر ما به صراحت سازنده را برای یک کلاس ننویسیم، کامپایلر جاوا یک سازنده پیش فرض برای آن کلاس ایجاد می کند.
هر بار که یک شی جدید ایجاد می شود، حداقل یک سازنده فراخوانی می شود .قانون اصلی سازنده این است که نام آنها باید هم نام با کلاس¬شان باشد. یک کلاس می تواند بیش از یک سازنده داشته باشد.
مثالی از سازنده در زیر آورده شده است:
1
2
3
4
5
6
7
8
|
public class Puppy{ public Puppy(){ } public Puppy(String name){ // This constructor has one parameter, name. } } |
همانطور که قبلا ذکر شد، کلاس طرحی برای اشیاء فراهم می کند. بنابراین اساسا یک آبجکت یا شی از یک کلاس ایجاد شده است. در جاوا، کلمه کلیدی new برای ایجاد اشیاء جدید استفاده می شود.
سه مرحله در هنگام ایجاد یک شی از کلاس وجود دارد:
به عنوان مثال ایجاد یک شی در زیر آورده شده است:
1
2
3
4
5
6
7
8
9
10
11
12
|
public class Puppy{ public Puppy(String name){ // This constructor has one parameter, name. System.out.println( "Passed Name is :" + name ); } public static void main(String []args){ // Following statement would create an object myPuppy Puppy myPuppy = new Puppy( "tommy" ); } } |
اگر برنامه فوق کامپایل و اجرا شود ، نتایج زیر را تولید می کند:
متغیرهای نمونه و متدها از طریق اشیاء ایجاد شده قابل دسترسی هستند. روش خوب برای دسترسی به متغیر نمونه به شرح زیر می باشد:
1
2
3
4
5
6
7
8
|
/* First create an object */ ObjectReference = new Constructor(); /* Now call a variable as follows */ ObjectReference.variableName; /* Now you can call a class method as follows */ ObjectReference.MethodName(); |
مثال:
در این مثال چگونگی دسترسی به متغیرهای نمونه و متدهای یک کلاس شرح داده شده است:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
public class Puppy{ int puppyAge; public Puppy(String name){ // This constructor has one parameter, name. System.out.println( "Name chosen is :" + name ); } public void setAge( int age ){ puppyAge = age; } public int getAge( ){ System.out.println( "Puppy"s age is :" + puppyAge ); return puppyAge; } public static void main(String []args){ /* Object creation */ Puppy myPuppy = new Puppy( "tommy" ); /* Call class method to set puppy"s age */ myPuppy.setAge( 2 ); /* Call another class method to get puppy"s age */ myPuppy.getAge( ); /* You can access instance variable as follows as well */ System.out.println( "Variable Value :" + myPuppy.puppyAge ); } } |
اگر برنامه فوق کامپایل و اجرا شود، نتایج زیر را تولید خواهد کرد:
عناوین یادداشتهای وبلاگ
دوستان